Data Aggregation এবং Grouping Techniques (groupby())

Machine Learning - পাইথন ডেটা সায়েন্স (Python Data Science) - Pandas: Data Manipulation
269

Python-এ ডেটা প্রক্রিয়াকরণের জন্য Pandas লাইব্রেরি ব্যবহৃত হয়। Data Aggregation এবং Grouping হল দুটি গুরুত্বপূর্ণ টেকনিক যা ডেটাকে বিভিন্ন গ্রুপে ভাগ করে এবং প্রতিটি গ্রুপের উপর কিছু স্ট্যাটিস্টিক্যাল অপারেশন (যেমন গড়, সর্বোচ্চ, সর্বনিম্ন, মোট) প্রয়োগ করতে সহায়ক। এটি সাধারণত ডেটা বিশ্লেষণে ব্যবহৃত হয়, যেমন ব্যবসায়িক ডেটা বিশ্লেষণ, আর্থিক বিশ্লেষণ, এবং বৈজ্ঞানিক গবেষণায়।

Pandas-এ groupby() ফাংশন ব্যবহার করে আপনি ডেটাকে গ্রুপ করতে পারেন এবং প্রতিটি গ্রুপের জন্য বিভিন্ন পরিসংখ্যান (aggregation) করতে পারেন। এই টেকনিকটি ডেটাকে একটি নির্দিষ্ট বৈশিষ্ট্যের উপর ভিত্তি করে গ্রুপিং এবং সেই গ্রুপগুলোর উপর কার্যক্রম করার জন্য অত্যন্ত শক্তিশালী।

১. groupby() ফাংশন

groupby() ফাংশন Pandas DataFrame বা Series-এ ব্যবহৃত হয় ডেটাকে একটি বা একাধিক কীগুলোর (column) ভিত্তিতে গ্রুপ করার জন্য।

groupby() এর সাধারণ সিনট্যাক্স:

df.groupby('column_name')

এটি column_name এর ভিত্তিতে ডেটাকে গ্রুপ করবে, এবং গ্রুপের উপর কোনও পরিসংখ্যানিক ফাংশন প্রয়োগ করতে পারবেন।

২. Data Aggregation (পরিসংখ্যান অপারেশন)

ডেটা গ্রুপ করার পরে, আমরা সাধারণত সেই গ্রুপগুলোর উপর কিছু পরিসংখ্যানিক অপারেশন (aggregation) করতে চাই। কিছু সাধারণ aggregation ফাংশন হল:

  • sum(): প্রতিটি গ্রুপের মানগুলির যোগফল।
  • mean(): প্রতিটি গ্রুপের গড় মান।
  • count(): প্রতিটি গ্রুপে কতগুলি উপাদান রয়েছে।
  • min(): প্রতিটি গ্রুপের সর্বনিম্ন মান।
  • max(): প্রতিটি গ্রুপের সর্বোচ্চ মান।
  • std(): প্রতিটি গ্রুপের মানের স্ট্যান্ডার্ড ডেভিয়েশন।

৩. groupby() ফাংশনের ব্যবহার

উদাহরণ:

ধরা যাক, আমাদের কাছে একটি ডেটাসেট রয়েছে যেখানে কিছু বিক্রয় ডেটা রয়েছে, এবং আমরা প্রতিটি বিক্রয় বিভাগের জন্য গড় বিক্রয় নির্ণয় করতে চাই।

import pandas as pd

# উদাহরণ ডেটা তৈরি
data = {
    'Department': ['HR', 'IT', 'HR', 'IT', 'Sales', 'Sales', 'IT', 'HR'],
    'Employee': ['Alice', 'Bob', 'Charlie', 'David', 'Eve', 'Frank', 'Grace', 'Hank'],
    'Sales': [200, 300, 150, 400, 500, 600, 350, 250]
}

df = pd.DataFrame(data)

# 'Department' অনুযায়ী ডেটা গ্রুপ করা এবং গড় বিক্রয় বের করা
grouped = df.groupby('Department')['Sales'].mean()

print(grouped)

আউটপুট:

Department
HR        200.000000
IT        350.000000
Sales     550.000000
Name: Sales, dtype: float64

এখানে, আমরা Department কলামের ভিত্তিতে ডেটা গ্রুপ করেছি এবং প্রতিটি গ্রুপের জন্য Sales কলামের গড় বের করেছি।


৪. একাধিক কলাম ব্যবহার করে গ্রুপিং

আমরা একাধিক কলাম ব্যবহার করেও গ্রুপ করতে পারি। উদাহরণস্বরূপ, যদি আমাদের "Department" এবং "Employee" কলামের ভিত্তিতে ডেটা গ্রুপ করতে হয়:

# 'Department' এবং 'Employee' এর ভিত্তিতে গ্রুপ করা এবং বিক্রয়ের মোট পরিমাণ বের করা
grouped = df.groupby(['Department', 'Employee'])['Sales'].sum()

print(grouped)

আউটপুট:

Department  Employee
HR          Alice       200
            Charlie     150
            Hank        250
IT          Bob         300
            David       400
            Grace       350
Sales       Eve         500
            Frank       600
Name: Sales, dtype: int64

এখানে, Department এবং Employee দুইটি কলামের ভিত্তিতে ডেটা গ্রুপ করা হয়েছে এবং প্রতিটি গ্রুপের জন্য বিক্রয়ের মোট পরিমাণ বের করা হয়েছে।


৫. একাধিক aggregation ফাংশন ব্যবহার করা

একাধিক aggregation ফাংশন প্রয়োগ করা সম্ভব। Pandas-এ এটি খুব সহজ, আপনি একাধিক ফাংশন একসাথে ব্যবহার করতে পারেন agg() ফাংশনের মাধ্যমে।

# 'Department' এর ভিত্তিতে গ্রুপ করা এবং একাধিক aggregation ফাংশন প্রয়োগ করা
grouped = df.groupby('Department')['Sales'].agg(['sum', 'mean', 'min', 'max'])

print(grouped)

আউটপুট:

           sum   mean  min  max
Department                      
HR         600  200.0  150  250
IT        1050  350.0  300  400
Sales     1100  550.0  500  600

এখানে, আমরা sum, mean, min, এবং max একসাথে ব্যবহার করে প্রতিটি Department এর জন্য বিভিন্ন পরিসংখ্যান বের করেছি।


৬. filter() ফাংশন ব্যবহার

Pandas-এ filter() ফাংশন ব্যবহার করে আপনি নির্দিষ্ট গ্রুপের উপর নির্ভর করে ডেটা ফিল্টার করতে পারেন। উদাহরণস্বরূপ, যদি আপনি এমন সব বিভাগ চাচ্ছেন যার গড় বিক্রয় ৩০০ এর বেশি:

# filter() ফাংশন ব্যবহার করে গড় বিক্রয় 300 এর বেশি এমন বিভাগগুলি নির্বাচন করা
filtered = df.groupby('Department').filter(lambda x: x['Sales'].mean() > 300)

print(filtered)

আউটপুট:

  Department Employee  Sales
1         IT      Bob    300
3         IT    David    400
6         IT    Grace    350
4      Sales      Eve    500
5      Sales    Frank    600

এখানে, আমরা filter() ফাংশন ব্যবহার করে শুধুমাত্র সেই বিভাগগুলিই নির্বাচন করেছি, যার গড় বিক্রয় ৩০০ এর বেশি।


সারাংশ

Pandas-এ groupby() ফাংশন ব্যবহার করে আপনি সহজেই ডেটাকে গ্রুপ করতে পারেন এবং প্রতিটি গ্রুপের উপর বিভিন্ন aggregation অপারেশন প্রয়োগ করতে পারেন। এটি ডেটা বিশ্লেষণের একটি শক্তিশালী এবং অপরিহার্য টুল। groupby() ফাংশন আপনাকে ডেটা গ্রুপ করার পর বিভিন্ন পরিসংখ্যানিক অপারেশন যেমন sum(), mean(), count(), min(), max(), agg(), এবং filter() প্রয়োগ করে আপনার ডেটা বিশ্লেষণ করতে সহায়ক হয়।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...